Damage function¶
import numpy as np
import plotly.graph_objects as go
γ1 = 0.00017675
γ2 = 2*0.0022
γ3_list = np.array([0, 2*0.0197, 2*0.3853])
threshold = np.arange(1.7, 2+0.05, 0.05)
x= np.linspace(0,5,500)
fig = go.Figure()
for step in threshold:
for γ3, name, color in zip(γ3_list, ["low", "high", "extreme"], ["red", "darkblue", "darkgreen"]):
fig.add_trace(go.Scatter(x=x, y=np.exp( - γ1*x - γ2/2*x**2 - γ3/2*(x - step)**2*(x>step)),
visible=False, line={'color': color, "width": 4}, name=name+" damage"))
fig.data[-1].visible=True
fig.data[-2].visible=True
fig.data[-3].visible=True
steps = []
for i in range(len(threshold)):
# Hide all traces
step = dict(
method ='restyle',
args = [{'visible': [False] * len(fig.data)},
{"title": "ȳ = {:.2f}".format(threshold[i])}],
label="ȳ = {:.2f}".format(threshold[i])
)
# Enable the two traces we want to see
step['args'][0]["visible"][3*i] = True
step['args'][0]["visible"][3*i+1] = True
step['args'][0]["visible"][3*i+2] = True
# step['args'][0]["visible"][4*i+3] = True
# Add step to step list
steps.append(step)
fig.update_xaxes(
showline=True,
# linecolor="black",
range=[0,5]
)
fig.update_yaxes(
showline=True,
range=[0,1.03]
)
sliders = [dict(
active=6,
currentvalue={"prefix": "threshold "},
steps = steps,
# name = "ȳ",
)]
fig.update_layout(
title=r'$\exp(-n)$',
sliders=sliders,
font=dict(size=20),
template="none"
)
fig.show()
# fig.write_html("damage_experiment.html")
γ1 = 0.00017675
γ2 = 2*0.0022
y_bar = 2
γ3_list = np.array([0, 2*0.0197, 2*0.3853])
threshold = np.arange(1.7, 2-0.01, 0.05)
x= np.linspace(0,5,500)
fig = go.Figure()
for step in threshold:
for γ3, name, color in zip(γ3_list, ["low", "high", "extreme"], ["red", "darkblue", "darkgreen"]):
logN = γ1*x + γ2/2*x**2
logN += γ3/2*(x - y_bar)**2*(x>y_bar) + γ3/2*(x-step)**2/(y_bar-step)**2*(y_bar-x)**2*((x>step)&(x<y_bar))
fig.add_trace(go.Scatter(x=x, y=np.exp(-logN),
visible=False, line={'color': color, "width": 4}, name=name+" damage"))
fig.data[-1].visible=True
fig.data[-2].visible=True
fig.data[-3].visible=True
steps = []
for i in range(len(threshold)):
# Hide all traces
step = dict(
method ='restyle',
args = [{'visible': [False] * len(fig.data)},
{"title": "ỹ = {:.2f}".format(threshold[i])}],
label="ỹ = {:.2f}".format(threshold[i])
)
step['args'][0]["visible"][3*i] = True
step['args'][0]["visible"][3*i+1] = True
step['args'][0]["visible"][3*i+2] = True
steps.append(step)
fig.update_xaxes(
showline=True,
linecolor="black",
range=[0,5]
)
fig.update_yaxes(
showline=True,
range=[0,1.04]
)
sliders = [dict(
active=5,
currentvalue={"prefix": "threshold "},
steps = steps,
pad={"t":50},
# name = "ȳ",
)]
fig.update_layout(
title=r'$\exp(-n)$',
sliders=sliders,
font=dict(size=20),
template="none"
)
fig.show()
# fig.write_html("damage_experiment2.html", include_mathjax='cdn')